home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / comm / mail / YamNet.lha / rexxtra12.lha / rexx / ARKList.rexx < prev    next >
OS/2 REXX Batch file  |  1990-03-18  |  2KB  |  90 lines

  1. /* ARKList.rexx */
  2.  
  3. /*
  4.      Format
  5.  
  6.        ARKList <file[.LZH]>
  7.  
  8.    Lists .LZH file contents in a more desirable fashion.
  9.  
  10. */
  11.  
  12. signal on failure; signal off error; signal on syntax; signal on break_c
  13. call addlib 'rexxextra.library',-20,-30,0
  14.  
  15. facility = 'ARKList'
  16. retcode = 0
  17. tname = 't:'||facility||pragma('ID')
  18. args. = ''
  19. template = 'FILE/A'
  20. dtemplate = template
  21.  
  22. parse arg g_c
  23. do while g_c='?'
  24.   options prompt dtemplate': '  /* this template is      */
  25.   parse pull g_c        /* displayed to the user */
  26.   if g_c='?' then do
  27.     g_s=sourceline(3)
  28.     if pos('/*',g_s)=0 then break; if pos('*/',g_s)>0 then break
  29.     say
  30.     g_s=sourceline(4)
  31.     do i=5 while pos('*/',g_s)=0; say g_s; g_s=sourceline(i); end
  32.     say
  33.     end
  34.   end
  35. interpret Cparse(g_c,template,'args')
  36. if args.ERRCODE > 1 then do; say facility'-E-BADARGS,' args.ERRTEXT; exit 5; end
  37.  
  38. infile = 'asdf'
  39.  
  40. 'LHARC >'tname' -x v 'args.FILE
  41. if ~open(infile,tname,'R') then do
  42.   say facility'-E-OPENIN, cannot open temp file:' tname
  43.   exit 20
  44.   end
  45. do until eof(infile)
  46.    inline = readln(infile)
  47.    if find(inline,'Listing of') = 1 then do
  48.      /* a new archive listing */
  49.      parse var inline . "'" lzfile "'"
  50.      inline = readln(infile)
  51.      inline = readln(infile)
  52.      if right(upper(lzfile),4) = '.LZH' then
  53.        lzfile = substr(lzfile,1,length(lzfile)-4)
  54.      else nop
  55.      end
  56.    else if left(inline,8) = '--------' then do
  57.      /* end of listing */
  58.      inline = readln(infile)
  59.      end
  60.    else if inline ~= '' then do
  61.      /* should be a file in the archive */
  62.      parse var inline osize =9 psize =16 . =22 fdate =30 . =51 fname
  63.      if fname ~= '' then do
  64.        if length(fname) > 33 then fname = '<=='||right(fname,30)
  65.        else fname = left(fname,33)
  66.        outline = fname||' '||right(osize,8)||'  '||left(fdate,10)||' '||lzfile
  67.        call writeln stdout, outline
  68.        end
  69.      else nop
  70.      end
  71.    end
  72. call close(infile)
  73.  
  74. GetOut:
  75. 'Delete' tname 'quiet'
  76. exit retcode
  77.  
  78. break_c:
  79. break_d:
  80. break_e:
  81. break_f:
  82.   say facility'-E-BREAK, Control-C interrupt'; retcode = 20; signal GetOut
  83. failure:
  84.   say facility'-E-FAIL, Line:' sigl', Error:' rc; retcode = rc; signal GetOut
  85. syntax:
  86.   say facility'-E-SYNTAX, Line:' sigl', Error:' rc; retcode = rc; signal GetOut
  87. error:
  88.   say facility'-E-ERROR, Line:' sigl', Error:' rc; retcode = rc; signal GetOut
  89.  
  90.